<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // Promise封装延迟输出函数
    function delay (duration, n) {
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve(n)
        }, duration)
      })
    }

    async function log () {
      // 1. 在 Promise 实例前添加 await 关键字，这样 await 的返回值就是 Promise 的 resolve 参数
      // 2. await 所在的函数必须被 async 修饰
      // 3. await 所在的函数会按照同步的方式进行代码的执行，也就是前面的 await 执行完毕了，才会执行后续的 await
      const n1 = await delay(2000, 1)
      console.log(n1)
      const n2 = await delay(1000, 2)
      console.log(n2)
      const n3 = await delay(1000, 3)
      console.log(n3)
    }

    log()




  </script>
</body>

</html>